package cn.bytepath.base.service;

import cn.bytepath.base.query.BaseQuery;
import cn.bytepath.util.PageInfo;

import java.util.List;

/**
 * 所有业务层的基类
 * @author Jack.C
 * @createDate 2022-01-24
 * @version 1.0
 */
public interface BaseService<T> {

    /**
     * 查询表中所有的对象
     * @return: java.util.List<T>
     * @update 2022/1/24
     */
    List<T> findAll();

    /**
     * 根据id查询表中的对象
     * @param id id
     * @return: T 对象
     * @update 2022/1/24
     */
    T findById(Long id);

    /**
     * 根据是否存在id决定是新增(id为null)还是修改(id不为null)
     * @param t 需保存或者修改的数据的存值对象
     * @update 2022/1/24
     */
    void saveOrUpdate(T t);

    /**
     * 根据id删除表中的数据
     * @param id id
     * @update 2022/1/24
     */
    void delete(Long id);

    /**
     * 根据查询条件返回页面信息(包括分页参数,对象集合)
     * @param query
     * @return: cn.bytepath.util.PageInfo<T> 返回给页面的信息
     * @update 2022/1/24
     */
    PageInfo<T> findPageInfoByQuery(BaseQuery query);

    /**
     * 根据id批量删除数据库表中的记录
     * @param ids long数组集合,装有id
     * @update 2022/1/24
     */
    void deleteBatch(Long[] ids);
}
